<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <title>Cheatsheet for Futures</title>
  </head>
  <body><pre style="margin: 0"><code style="background: transparent"><span style="color: #8e908c">// Constructing leaf futures</span>
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/fn.empty.html">empty</a> ()             -&gt; <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/fn.ok.html">ok</a>    (<var>T</var>)            -&gt; <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/fn.err.html">err</a>   (<var>E</var>)            -&gt; <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/fn.result.html">result</a>(<span style="color: #4271ae">Result</span>&lt;<var>T</var>, <var>E</var>&gt;) -&gt; <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;

<span style="color: #8e908c">// General future constructor</span>
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/fn.poll_fn.html">poll_fn</a>(<span style="color: #8959a8">FnMut</span>(<span style="color: #3e999f">thread_local!</span>(<span style="color: #4271ae">Task</span>)) -&gt; <span style="color: #4271ae">Poll</span>&lt;<var>T</var>, <var>E</var>&gt;) -&gt; <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;

<span style="color: #8e908c">// Mapping futures</span>
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.map">Future::map</a>     (<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #8959a8">FnOnce</span>(<var>T</var>) -&gt; <var>U</var>) -&gt; <span style="color: #c82829">Future</span>&lt;<var>U</var>, <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.map_err">Future::map_err</a> (<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #8959a8">FnOnce</span>(<var>E</var>) -&gt; <var>F</var>) -&gt; <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>F</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.from_err">Future::from_err</a>(<span style="color: #c82829">Future</span>&lt;<var>T</var>, <span style="color: #4271ae">Into</span>&lt;<var>E</var>&gt;&gt;)           -&gt; <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;

<span style="color: #8e908c">// Chaining (sequencing) futures</span>
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.then">Future::then</a>    (<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #8959a8">FnOnce</span>(<span style="color: #4271ae">Result</span>&lt;<var>T</var>, <var>E</var>&gt;) -&gt; <span style="color: #c82829">IntoFuture</span>&lt;<var>U</var>, <var>F</var>&gt;) -&gt; <span style="color: #c82829">Future</span>&lt;<var>U</var>, <var>F</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.and_then">Future::and_then</a>(<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #8959a8">FnOnce</span>(<var>T</var>)            -&gt; <span style="color: #c82829">IntoFuture</span>&lt;<var>U</var>, <var>E</var>&gt;) -&gt; <span style="color: #c82829">Future</span>&lt;<var>U</var>, <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.or_else">Future::or_else</a> (<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #8959a8">FnOnce</span>(<var>E</var>)            -&gt; <span style="color: #c82829">IntoFuture</span>&lt;<var>T</var>, <var>F</var>&gt;) -&gt; <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>F</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.flatten">Future::flatten</a> (<span style="color: #c82829">Future</span>&lt;<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #4271ae">Into</span>&lt;<var>E</var>&gt;&gt;)                          -&gt; <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;

<span style="color: #8e908c">// Joining (waiting) futures</span>
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.join">Future::join</a> (<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #c82829">IntoFuture</span>&lt;<var>U</var>, <var>E</var>&gt;)                                                       -&gt; <span style="color: #c82829">Future</span>&lt;(<var>T</var>, <var>U</var>),          <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.join3">Future::join3</a>(<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #c82829">IntoFuture</span>&lt;<var>U</var>, <var>E</var>&gt;, <span style="color: #c82829">IntoFuture</span>&lt;<var>V</var>, <var>E</var>&gt;)                                     -&gt; <span style="color: #c82829">Future</span>&lt;(<var>T</var>, <var>U</var>, <var>V</var>),       <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.join4">Future::join4</a>(<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #c82829">IntoFuture</span>&lt;<var>U</var>, <var>E</var>&gt;, <span style="color: #c82829">IntoFuture</span>&lt;<var>V</var>, <var>E</var>&gt;, <span style="color: #c82829">IntoFuture</span>&lt;<var>W</var>, <var>E</var>&gt;)                   -&gt; <span style="color: #c82829">Future</span>&lt;(<var>T</var>, <var>U</var>, <var>V</var>, <var>W</var>),    <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.join5">Future::join5</a>(<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #c82829">IntoFuture</span>&lt;<var>U</var>, <var>E</var>&gt;, <span style="color: #c82829">IntoFuture</span>&lt;<var>V</var>, <var>E</var>&gt;, <span style="color: #c82829">IntoFuture</span>&lt;<var>W</var>, <var>E</var>&gt;, <span style="color: #c82829">IntoFuture</span>&lt;<var>X</var>, <var>E</var>&gt;) -&gt; <span style="color: #c82829">Future</span>&lt;(<var>T</var>, <var>U</var>, <var>V</var>, <var>W</var>, <var>X</var>), <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/fn.join_all.html">join_all</a>     (<span style="color: #4271ae">IntoIterator</span>&lt;<span style="color: #c82829">IntoFuture</span>&lt;<var>T</var>, <var>E</var>&gt;&gt;)                                                       -&gt; <span style="color: #c82829">Future</span>&lt;<span style="color: #4271ae">Vec</span>&lt;<var>T</var>&gt;,          <var>E</var>&gt;

<span style="color: #8e908c">// Selecting (racing) futures</span>
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.select">Future::select</a> (<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #c82829">IntoFuture</span>&lt;<var>T</var>, <var>E</var>&gt;) -&gt; <span style="color: #c82829">Future</span>&lt;(<var>T</var>, <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;), (<var>E</var>, <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;)&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.select2">Future::select2</a>(<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #c82829">IntoFuture</span>&lt;<var>U</var>, <var>F</var>&gt;) -&gt; <span style="color: #c82829">Future</span>&lt;<span style="color: #4271ae">Either</span>&lt;(<var>T</var>, <span style="color: #c82829">Future</span>&lt;<var>U</var>, <var>F</var>&gt;), (<var>U</var>, <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;)&gt;, <span style="color: #4271ae">Either</span>&lt;(<var>E</var>, <span style="color: #c82829">Future</span>&lt;<var>U</var>, <var>F</var>&gt;), (<var>F</var>, <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;)&gt;&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/fn.select_all.html">select_all</a>     (<span style="color: #4271ae">IntoIterator</span>&lt;<span style="color: #c82829">IntoFuture</span>&lt;<var>T</var>, <var>E</var>&gt;&gt;) -&gt; <span style="color: #c82829">Future</span>&lt;(<var>T</var>, <span style="color: #4271ae">usize</span>, <span style="color: #4271ae">Vec</span>&lt;<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;&gt;), (<var>E</var>, <span style="color: #4271ae">usize</span>, <span style="color: #4271ae">Vec</span>&lt;<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;&gt;)&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/fn.select_ok.html">select_ok</a>      (<span style="color: #4271ae">IntoIterator</span>&lt;<span style="color: #c82829">IntoFuture</span>&lt;<var>T</var>, <var>E</var>&gt;&gt;) -&gt; <span style="color: #c82829">Future</span>&lt;(<var>T</var>, <span style="color: #4271ae">Vec</span>&lt;<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;&gt;), <var>E</var>&gt;

<span style="color: #8e908c">// Utility</span>
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/fn.lazy.html">lazy</a>         (<span style="color: #8959a8">FnOnce</span>() -&gt; <span style="color: #c82829">IntoFuture</span>&lt;<var>T</var>, <var>E</var>&gt;)             -&gt; <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/fn.loop_fn.html">loop_fn</a>      (<var>S</var>, <span style="color: #8959a8">FnMut</span>(<var>S</var>) -&gt; <span style="color: #c82829">IntoFuture</span>&lt;<span style="color: #4271ae">Loop</span>&lt;<var>T</var>, <var>S</var>&gt;, <var>E</var>&gt;) -&gt; <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;

<span style="color: #8e908c">// Miscellaneous</span>
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.into_stream">Future::into_stream</a>   (<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;)            -&gt; <span style="color: #4271ae">Stream</span>&lt;<var>T</var>, <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.flatten_stream">Future::flatten_stream</a>(<span style="color: #c82829">Future</span>&lt;<span style="color: #4271ae">Stream</span>&lt;<var>T</var>, <var>E</var>&gt;, <var>E</var>&gt;) -&gt; <span style="color: #4271ae">Stream</span>&lt;<var>T</var>, <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.fuse">Future::fuse</a>          (<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;)            -&gt; <span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.catch_unwind">Future::catch_unwind</a>  (<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;+<span style="color: #4271ae">UnwindSafe</span>) -&gt; <span style="color: #c82829">Future</span>&lt;<span style="color: #4271ae">Result</span>&lt;<var>T</var>, <var>E</var>&gt;, <span style="color: #4271ae">Any</span>+<span style="color: #4271ae">Send</span>&gt;
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.shared">Future::shared</a>        (<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;)            -&gt; <span style="color: #c82829">Future</span>&lt;<span style="color: #4271ae">SharedItem</span>&lt;<var>T</var>&gt;, <span style="color: #4271ae">SharedError</span>&lt;<var>E</var>&gt;&gt;+<span style="color: #4271ae">Clone</span>
<span style="color: #8959a8">fn</span> <a href="https://docs.rs/futures/0.1.13/futures/future/trait.Future.html#method.wait">Future::wait</a>          (<span style="color: #c82829">Future</span>&lt;<var>T</var>, <var>E</var>&gt;)            -&gt; <span style="color: #4271ae">Result</span>&lt;<var>T</var>, <var>E</var>&gt;
</code></pre></body>
</html>